this zip should contain - 
hearts.bmp,
hearts.spt, and
heartpiece.wav (by TheChemist)

_fullheart.zes and
_heartpiece.zes (by Satanman)


'Installation'
1)put heartpiece.wav in \sounds in the QD's folder, and load it in the sounds manager
2)put TheChemists other files in \spritesheets in the QD's folder, and load hearts.spt in the graphics manager.
3)put my scripts in \scripts in the QD's folder, and load them in the entity manager.
4)add this line to your quests main script (in firstrun, with other counters):
	CreateCounterWithID(0, 4,  "HeartPieces");// How many pieces of heart the player has
5)open up _menulib.zes and find the function 'DrawMenu()'
6)somewhere in that function, add this block:
	DrawBorder( 440, 320 + Adj, 160, 120, 8 );
	if (GetCounterValue("masterKey") == 1)
		DrawImage("_itemkeym", 480, 360 + Adj, 255, 255, 255, 255, 0, 200 );
	if (GetCounterValue("HeartPieces") == 0)
		DrawImage("heartempty", 520, 360 + Adj, 255, 255, 255, 255, 0, 200 );
	else if (GetCounterValue("HeartPieces") == 1)
		DrawImage("heart14", 520, 360 + Adj, 255, 255, 255, 255, 0, 200 );
	else if (GetCounterValue("HeartPieces") == 2)
		DrawImage("heart24", 520, 360 + Adj, 255, 255, 255, 255, 0, 200 );
	else if (GetCounterValue("HeartPieces") == 3)
		DrawImage("heart34", 520, 360 + Adj, 255, 255, 255, 255, 0, 200 );
	else if (GetCounterValue("HeartPieces") == 4)
	{
		SetMaxHealth("player1", GetMaxHealth("player1") + 100);
		SetCounterValue("HeartPieces", 0);
	}
now use the heart items as normal items, and they should work
there's also a new function in this:
	CallFunction(ident[], false, "StartDrop", "null");
call it when you want the heart to fall from the ceiling. just remember to SetPickableFlag(Ident[], false) and SetVisibleFlag(Ident[], false) in FirstRun() of the screen you want it to drop on	